package com.crmweb.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.crmweb.dto.TreeModules;
import com.crmweb.entity.Modules;
import com.crmweb.entity.Roles;
import com.crmweb.entity.Userroles;
import com.crmweb.entity.Users;

public interface UsersService {

	
	/****
	 * 根据用户名密码登录
	 * @param loginName
	 * @param password
	 * @return entity
	 */
	public Users login(@Param("loginName")String loginName,@Param("password")String password);
	
	/**
	 * 更改用户最后登录时间
	 * @param id
	 * @return
	 */
	public int updateLastLoginTime(String id);
	
	
	/***
	 * 根据uid获取rid
	 * @param userId
	 * @return list
	   * 因为一个用户有多个角色
	 */
	public List<String> selRoleIdByUid(String userId);
	/**
	 * 根据角色Id查询角色
	 * @param roleId
	 * @return
	 */
	public Roles selRoleByRoleId(String roleId);
	/**
	 * 根据用户ID获取用户信息
	 * @param id
	 * @return
	 */
	public  Users selUsersByUid(String id);
	/****
	 * 根据rid获取mid
	 * @param roleId
	 * @return list
	    * 因为一个角色可以管理多个模块
	 */	
	public List<Integer> selMidByRid(List<String> roleId);
	
	/**
	 * 根据mid查询对应的mname
	 * @param mids
	 * @return list
	 */
	public List<Modules> selByMid(List<Integer> mids);
	
	/**
	 * 根据登录的用户获取相对应的模块信息
	 * */
	public List<Modules> queryByLoginUser(String loginName,String password);
	
	/**
	 * 将modules里面的属性替换成树节点
	 * **/
	public List<TreeModules> queryModulesTreeNodes(Users users);
	
	/**
	 * 封装成树形
	 * */
	public List<TreeModules> queryModel(List<TreeModules> nodes);
	
	/***
	 * 查寻所有姓名
	 * @return
	 */
	public List<String> findAllName();

	/**
	 * 多条件分页查询用户
	 * @param user
	 * @return
	 */
	public List<Users> showAllByWhere(Users user);

	/**
	 * 多条件分页查询用户数量  
	 * 用于显示分页总数量
	 * @param user
	 * @return
	 */
	public int getCount(Users user);
	
	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	public int addUser(Users user);
	/**
	 * 修改用户信息
	 * 重置密码
	 * @param user
	 * @return
	 */
	public int updUser(Users user);
	/**
	 * 删除用户
	 * @param id
	 * @return
	 */
	public int delUser(String id);
	/**
	 * 解除用户锁定
	 * @param id
	 * @return
	 */
	public int deblockUser(String id);
	/**
	 * 用户锁定
	 * @param id
	 * @return
	 */
	public int blockUser(String id);
	
	
	/**
	 * 给用户批量添加角色
	 * @param rid
	 * @param uid
	 * @return
	 */
	public int addRolersToUser(List<Userroles> rid);
	/**
	 * 删除用户角色
	 * @param rid
	 * @param uid
	 * @return
	 */
	public int delRolesByUser(String userId,String roleId);
	
	/**
	 * 修改密码
	 * @param pwd
	 * @return
	 */
	public int updPassword(String pwd,String uid);
}
